<?php

/*
    [UCenter] (C)2001-2008 Comsenz Inc.
    This is NOT a freeware, use is subject to license terms

    $Id: pm.php 12126 2008-01-11 09:40:32Z heyond $
*/

!defined('IN_UC') && exit('Access Denied');

class pmcontrol extends base
{

    function pmcontrol()
    {
        $this->base();
        $this->load('user');
        $this->load('pm');
    }

    function oncheck_newpm($arr)
    {
        @extract($arr, EXTR_SKIP);//uid
        $this->user['uid'] = intval($uid);
        return $_ENV['pm']->check_newpm($this->user['uid']);
    }

    function onsendpm($arr)
    {
        @extract($arr, EXTR_SKIP);//fromuid, msgto, subject, message, replypmid, isusername
        if ($fromuid) {
            $user = $_ENV['user']->get_user_by_uid($fromuid);
            $user = uc_addslashes($user, 1);
            if (!$user) {
                return 0;
            }
            $this->user['uid'] = $user['uid'];
            $this->user['username'] = $user['username'];
        } else {
            $this->user['uid'] = 0;
            $this->user['username'] = '';
            $replypmid = 0;
        }
        if ($replypmid) {
            $isusername = 1;
            $pms = $_ENV['pm']->get_pm_by_pmid($this->user['uid'], $replypmid);
            if ($pms[0]['msgfromid'] == $this->user['uid']) {
                $user = $_ENV['user']->get_user_by_uid($pms[0]['msgtoid']);
                $msgto = $user['username'];
            } else {
                $msgto = $pms[0]['msgfrom'];
            }
        }

        $msgto = array_unique(explode(',', $msgto));
        $isusername && $msgto = $_ENV['user']->name2id($msgto);
        $blackls = $_ENV['pm']->get_blackls($this->user['uid'], $msgto);
        $lastpmid = 0;
        foreach ($msgto as $uid) {
            if (!$fromuid || !in_array('{ALL}', $blackls[$uid])) {
                $blackls[$uid] = $_ENV['user']->name2id($blackls[$uid]);
                if (!$fromuid || isset($blackls[$uid]) && !in_array($this->user['uid'], $blackls[$uid])) {
                    $lastpmid = $_ENV['pm']->sendpm($subject, $message, $this->user, $uid, $replypmid);
                }
            }
        }
        return $lastpmid;
    }

    function ondelete($arr)
    {
        @extract($arr, EXTR_SKIP);//$uid, $folder, $pmids
        $this->user['uid'] = intval($uid);
        return $_ENV['pm']->deletepm($this->user['uid'], $folder, $pmids);
    }

    function onignore($arr)
    {
        @extract($arr, EXTR_SKIP);//$uid
        $this->user['uid'] = intval($uid);
        $_ENV['pm']->set_ignore($this->user['uid']);
    }

    function onls($arr)
    {
        @extract($arr, EXTR_SKIP);//uid, page, pagesize, folder, filter, msglen
        $folder = in_array($folder, array('newbox', 'inbox', 'outbox')) ? $folder : 'inbox';
        $filter = $filter ? (in_array($filter, array('newpm', 'systempm', 'announcepm')) ? $filter : '') : '';
        $this->user['uid'] = intval($uid);
        $pmnum = $_ENV['pm']->get_num($this->user['uid'], $folder, $filter);
        if ($pagesize > 0) {
            $pms = $_ENV['pm']->get_pm_list($this->user['uid'], $pmnum, $folder, $filter, $this->page_get_start($page, $pagesize, $pmnum), $pagesize);
            if (is_array($pms) && !empty($pms)) {
                foreach ($pms as $key => $pm) {
                    if ($msglen) {
                        $pms[$key]['message']{0} == "\t" && $pms[$key]['message'] = substr($pms[$key]['message'], 1);
                        $pms[$key]['message'] = $_ENV['pm']->removecode($pms[$key]['message'], $msglen);
                    } else {
                        unset($pms[$key]['message']);
                    }
                    unset($pms[$key]['folder']);
                }
            }
            $result['data'] = $pms;
        }
        $result['count'] = $pmnum;
        return $result;
    }

    function onviewnode($arr)
    {
        @extract($arr, EXTR_SKIP);//uid, pmid, type
        $this->user['uid'] = intval($uid);
        $pmid = $_ENV['pm']->pmintval($pmid);
        $pm = $_ENV['pm']->get_pmnode_by_pmid($this->user['uid'], $pmid, $type);
        if ($pm) {
            require_once UC_ROOT . 'lib/uccode.class.php';
            $this->uccode = new uccode();
            $pm['message'] = $this->uccode->complie($pm['message']);
            return $pm;
        }
    }

    function onview($arr)
    {
        @extract($arr, EXTR_SKIP);//uid, pmid
        $this->user['uid'] = intval($uid);
        $pmid = $_ENV['pm']->pmintval($pmid);
        $pms = $_ENV['pm']->get_pm_by_pmid($this->user['uid'], $pmid);
        require_once UC_ROOT . 'lib/uccode.class.php';
        $this->uccode = new uccode();
        foreach ($pms as $key => $pm) {
            $pms[$key]['message'] = $this->uccode->complie($pms[$key]['message']);
            !$status && $status = $pm['msgtoid'] && $pm['new'];
        }
        $status && $_ENV['pm']->set_pm_status($this->user['uid'], $pmid);
        return $pms;
    }

    function onblackls_get($arr)
    {
        @extract($arr, EXTR_SKIP);//uid
        $this->user['uid'] = intval($uid);
        return $_ENV['pm']->get_blackls($this->user['uid']);
    }

    function onblackls_set($arr)
    {
        @extract($arr, EXTR_SKIP);//uid, blackls
        $this->user['uid'] = intval($uid);
        return $_ENV['pm']->set_blackls($this->user['uid'], $blackls);
    }

}

?>